package Day_0201.JUC;

import java.util.concurrent.Callable;

/**
 * @author zxc
 * @date 2023/02/01 22:49
 **/
public class Callable_Future {
    public static void main(String[] args) {
        /**
         * Callable和Future之间的区别
         * ===》
         * 1.Callable
         * （1）Callable接口类似于Runnable，但是Runnable不会返回结果，并且无法抛出返回结果的异常;
         * （2）而Callable功能更强大一些，被线程执行后，可以返回值，这个返回值可以被Future拿到;
         * ===》
         * 也就是说，Future可以拿到异步执行任务的返回值;可以认为是带有回调的Runnable。
         *
         * 2.Future
         * （1）Future接口表示异步任务，是还没有完成的任务给出的未来结果。
         * ===》
         * 所以说Callable用于产生结果，Future用于获取结果。
         *
         */
    }
    // 即，类实现Runnable接口，需要重写run方法，run方法返回值为void;
    class person implements Runnable{

        @Override
        public void run() {

        }
    }
    // 即，类实现Callable接口，需要重写call方法，call方法返回值可以指定;
    class person2 implements Callable<Integer>{

        @Override
        public Integer call() throws Exception {
            return null;
        }
    }
}
